// 在react中的仓库和vue中的仓库有不同的地方，也有类似的地方
// 类似的就是他们都是存放数据，给不同组件是哟批评数据的一个库
// 不同点就是他们的存在形式和操作方法不一样


// react中的仓库首先是一整个大的仓库，里面有很多小仓库
// 从redux中引入创建仓库还有合并小仓库的方法


//  createStore / combineReducers / applyMiddleware这三个api是最重要的
// 三个特点：store必须是单一数据源，拿来的数据只能从一个地方拿到 / store中的状态是只读 / store中的数据只能通过reducer来修改
// 三个概念：store是数据仓库， action(用于改变数据的对象{type: 信号，payload})，reducer（专门用来修改状态）
import app from './modules/app'
import use from './modules/use'

// 想要在组件中使用仓库的数据，那么就需要将react和redux连接起来，这个就是react-redux


import { createStore, combineReducers, applyMiddleware, compose } from 'redux'
// createStore划掉是过期了但是能正常使用

// 用来查看仓库中的state数据，将他打印出来，前后对比
import logger from "redux-logger"
// 异步操作仓库中的状态，本来只能操作同步的状态，但是通过redux-thunk就可以同步操作状态了
// 注意，这个也是使用applyMiddleware才能使用，斌且需要写在logger前面，因为你要操作完才能正确的反映出仓库的状态
// 合并在一起使用compose
import thunk from 'redux-thunk'

// 一个仓库就代表一个reduce 将所有的小仓库都和并在一起
const reducer = combineReducers({
    app,
    use
    // 子store1
    // 子store2
})

const store = createStore(reducer, compose(applyMiddleware(thunk), applyMiddleware(logger)))

// console.log("store", store); //这个仓库里面的都是函数，有异步操作，也有获取小仓库的状态
// console.log("store", store.getState());
// 这个store就是整体的仓库的内容，可以进行操作

export default store